Prima del C++11, lo standard C++ era "indipendente dai thread," che si basava su API specifiche della piattaforma come POSIX Threads (Pthreads) o Win32. Il C++ moderno ha rivoluzionato il linguaggio introducendo un modello Modello di Memoria e un'API standardizzata per la concorrenza.
1. Il "Mutamento Fondamentale" del C++11
Il C++11 ha trasformato il linguaggio da una macchina astratta monoprocesso in una che comprende nativamente l'esecuzione concorrente tramite l' <thread> header e std::thread. Questo ha spostato la gestione multithread da un problema di libreria esterna al sistema tipi principale.
2. Garanzie sulle Eccezioni
Lo noexcept specificatore è fondamentale nei contesti concorrenti. Fornisce un contratto secondo cui una funzione (come il punto di ingresso di un thread) non propagherà eccezioni. Se un'eccezione sfugge a un noexcept confine, std::terminate() viene chiamato immediatamente, prevenendo la corruzione di uno stato indefinito.
3. Tipi di Dati Uniformi
La standardizzazione include tipi come long long int (adottato dal C99) e std::filesystem, garantendo che le larghezze dei dati e le interazioni con il sistema rimangano coerenti su diversi hardware quando condivise tra thread.